The present disclosure relates generally to testing of graphical user interfaces (GUIs) and, more particularly to detection of layout corruption problems in a GUI.
Hypertext Markup Language (HTML) is a standard markup language that is used to create most webpages. An HTML document comprises web elements that describe the structure and content of the webpage. A web browser reads the HTML document and renders the webpage described by the HTML document in a browser window. Common browsers include INTERNET EXPLORER®, SAFARI®, FIREFOX®, and CHROME®. Different versions of these browsers exist for different operating systems, such as MICROSOFT WINDOWS®, APPLE OSX®, APPLE IOS®, and ANDROID®.
For many web based applications, a browser is also used to remotely access an application located on a remote server. The graphical user interface (GUI) for the application is displayed in a browser window. The GUI is essentially a collection of HTML documents that are rendered by the browser. Before such web-based applications are released, GUI testing is performed to ensure that the GUI displays properly in the browser window.
A common problem with GUI testing is that there are many different browsers and many operating systems. Both the browser and the operating system impact how an HTML document is rendered on the screen. Also, the language used for text elements in an HTML document impacts how the GUI or web page is rendered. Given the multitude of browsers, operating systems, and languages, it is impractical to test every possible combination. Consequently, user interface testing is usually limited to the most common combinations of browsers and operating systems, and for only a few languages. Because all possible combinations are not tested, there is a risk that the GUI will not render properly in some scenarios resulting in corruption of the GUI layout. Common layout corruption problems include overlapping web elements and overlapping web elements.
In order to improve quality of web-based software products, there is a need to automate GUI testing in order to minimize the number of layout corruption problems.